package Estructuras;


import java.util.Observable;
import java.util.logging.Level;
import java.util.logging.Logger;


/**
 *
 * @author Luis E Sosa S
 */
public class TimerH extends Observable implements Runnable {


  //contador para llevar el tiempo actual
  private int contador;

  //milisegundos que dura el contador en incrementarse
  private int delay;


  //detener hilo
  private boolean detener;


  /*Ingresa el delay*/
  public TimerH(int delay) {
    this.delay = delay;
    this.contador = 0;
    this.detener = false;
    
  }

  //Usa los valores por defectos en la configuracion
  public TimerH() {
    this.contador = 0;
    this.delay = Configuracion.delay;
    this.detener = false;
  }


  
//Para incrementar el contador
  public void incrementar() throws InterruptedException{
    this.contador++;
    //se marca como que ha cambiado
    setChanged();
    
    //notifica a todos los que los observa que ha cambiado y le envia el
    //contador
    this.notifyObservers(this.contador);

    clearChanged(); // Notifica que el estado no ha cambiado nuevamente...
    
    //ser duerme por delay
    Thread.sleep(this.delay);

  }


  //Metodo que se invoca al iniciar el hilo
  public void run() {
    while(!detener){
      try {
        incrementar();
        System.out.println("CICLO "+this.contador);
      } catch (InterruptedException ex) {
        Logger.getLogger(TimerH.class.getName()).log(Level.SEVERE, null, ex);
      }
    }
    
  }


 //para decirle al hilo que se detenga
  public void detener(){
    this.detener = true;
  }

 

  public int getContador() {
    return contador;
  }

  public void setContador(int contador) {
    this.contador = contador;
  }
  



}
